package cn.rkylin.oms.push.adapter;

import java.util.Map;

import org.springframework.stereotype.Service;

import cn.rkylin.oms.system.shop.domain.Shop;

@Service("xvpPushAdapter")
public class XvpPushAdapter extends PushAdapter {

	/**
	 * 系统发货
	 * 
	 * @param shop
	 *            网店对象
	 * @param ecItemCode
	 *            平台商品编码
	 * @param ecTradeCode
	 *            平台交易编码
	 * @param ecSkuCode
	 *            平台规格编码
	 * @return 结果对象
	 */
	@Override
	public Map<String, Object> pushSystemConsignment(Shop shop, String ecItemCode, String ecTradeCode, String ecSkuCode,
			String shipTime) {
		return this.getPushVisitor().pushSystemConsignment(shop, ecItemCode, ecTradeCode, ecSkuCode, shipTime);
	}

	/**
	 * 自己联系物流（线下物流）发货
	 * 
	 * @param shop
	 *            网店对象
	 * @param ecTradeCode
	 *            平台交易编码
	 * @param lgstNo
	 *            物流单号
	 * @param lgstCode
	 *            物流公司编码
	 * @return 结果对象
	 */
	@Override
	public Map<String, Object> pushTradeOfflineSend(Shop shop, String ecTradeCode, String lgstNo, String lgstCode)
			throws Exception {
		// 由于ecTradeCode是系统使用的，所以格式是ecTradeCode+“-”+时间，在向淘宝推送的时候，需要截串
		if (ecTradeCode != null) {
			ecTradeCode = ecTradeCode.split("-")[0];
		}
		return this.getPushVisitor().pushTradeOfflineSend(shop, ecTradeCode, lgstNo, lgstCode);
	}

	/**
	 * 商品上架
	 * 
	 * @param shop
	 *            网店对象
	 * @param ecItemCode
	 *            平台商品编码
	 * @param stockCount
	 *            库存数量
	 * @return 结果对象
	 */
	@Override
	public Map<String, Object> pushItemListing(Shop shop, String ecItemCode, String stockCount) throws Exception {
		return this.getPushVisitor().pushItemListing(shop, ecItemCode, stockCount);
	}

	/**
	 * 商品下架
	 * 
	 * @param shop
	 *            网店对象
	 * @param ecItemCode
	 *            平台商品编码
	 * @return 结果对象
	 */
	@Override
	public Map<String, Object> pushItemDeListing(Shop shop, String ecItemCode) throws Exception {
		return this.getPushVisitor().pushItemDeListing(shop, ecItemCode);
	}

	/**
	 * 批量同意退款
	 * 
	 * @param shop
	 *            网店对象
	 * @param ecRefundCodes
	 *            平台退款编号, 按照 ","号分割
	 * @param code
	 *            短信验证码
	 * @return 结果对象
	 */
	@Override
	public Map<String, Object> pushRefundBatchAgree(Shop shop, String ecRefundCodes, String code) {
		return this.getPushVisitor().pushRefundBatchAgree(shop, ecRefundCodes, code);
	}

	/**
	 * 拒绝退款
	 * 
	 * @param shop
	 *            网店对象
	 * @param ecRefundCode
	 *            平台退款编号
	 * @param refuseMessage
	 *            拒绝退款时的说明信息
	 * @param refuseReasonId
	 *            拒绝原因编号
	 * @param refusePath
	 *            拒绝退款时的退款凭证对应的本地绝对路径
	 * @return 结果对象
	 */
	@Override
	public Map<String, Object> pushRefundRefuse(Shop shop, String ecRefundCode, String refuseMessage,
			String refuseReasonId, String refusePath) {
		return this.getPushVisitor().pushRefundRefuse(shop, ecRefundCode, refuseMessage, refuseReasonId, refusePath);
	}

	/**
	 * 卖家同意退货
	 * 
	 * @param shop
	 *            网店对象
	 * @param ecRefundCode
	 *            平台退款编号
	 * @param name
	 *            卖家姓名
	 * @param address
	 *            卖家提供的退货地址
	 * @param post
	 *            卖家提供的退货地址的邮编
	 * @param tel
	 *            卖家座机
	 * @param mobile
	 *            卖家手机
	 * @param remark
	 *            卖家退货留言
	 * @param sellerAddressId
	 *            卖家收货地址编号
	 * @return 结果对象
	 */
	@Override
	public Map<String, Object> pushReturnGoodsAgree(Shop shop, String ecRefundCode, String name, String address,
			String post, String tel, String mobile, String remark, String sellerAddressId) {
		return this.getPushVisitor().pushReturnGoodsAgree(shop, ecRefundCode, name, address, post, tel, mobile, remark,
				sellerAddressId);
	}

	/**
	 * 审核退款单
	 * 
	 * @param shop
	 *            网店对象
	 * @param ecRefundCode
	 *            平台退款编号
	 * @param erpStatus
	 *            审核状态 已审核/未审核
	 * @return 结果对象
	 */
	@Override
	public Map<String, Object> pushRefundAppr(Shop shop, String ecRefundCode, String erpStatus) {
		return this.getPushVisitor().pushRefundAppr(shop, ecRefundCode, erpStatus);
	}

	/**
	 * 宝贝/SKU库存修改(商品)
	 * 
	 * @param shop
	 *            网店对象
	 * @param ecItemCode
	 *            平台退款编号
	 * @param skuId
	 *            规格id
	 * @param stockCount
	 *            库存数量
	 * @return 结果对象
	 */
	@Override
	public Map<String, Object> pushItemQuantityUpdate(Shop shop, String ecItemCode, String skuId, String stockCount) throws Exception {
		return this.getPushVisitor().pushItemQuantityUpdate(shop, ecItemCode, skuId, stockCount);
	}

	/**
	 * 宝贝/SKU库存修改(SKU)
	 * 
	 * @param shop
	 *            网店对象
	 * @param ecItemCode
	 *            平台退款编号
	 * @param ecSkuCode
	 *            平台规格编码
	 * @param stockCount
	 *            库存数量
	 * @return 结果对象
	 */
	@Override
	public Map<String, Object> pushSkuQuantityUpdate(Shop shop, String ecItemCode, String ecSkuCode,
			String stockCount) throws Exception {
		return this.getPushVisitor().pushSkuQuantityUpdate(shop, ecItemCode, ecSkuCode, stockCount);
	}

	/**
	 * 修改一笔交易备注
	 *
	 * @param tid
	 *            交易编号
	 * @param memo
	 *            备注
	 * @param flag
	 *            交易备注旗帜，可选值为：0(灰色), 1(红色), 2(黄色), 3(绿色), 4(蓝色), 5(粉红色)，默认值为0
	 * @return
	 * @throws Exception
	 */
	@Override
	public Map<String, Object> pushTradeMemo(Shop shop, Long tid, String memo, Long flag) throws Exception {
		return this.getPushVisitor().pushTradeMemo(shop, tid, memo, flag);
	}

}
